Van egy adatkészletem az alábbiak szerint név col1 col2 a 10,3 10,9 b 11 15 c 20 7.2 d 6.2 6.2 e 5,3 5,4 f 4,5 4,0 összehasonlítani akarom a df col1 és col2 értékét, és szeretnék egy másik oszlopot készíteni, amelyben a col1 és col2 értékek összehasonlításakor, ha a col2 értéke növekszik a col1 értékéről, akkor melléjük növekvést szeretnék beírni az ott lévő oszlopomba, és csökkenő, akkor csökkenő szöveget akarok írni, és nincs változás, ha azonosak és én ilyen kimenetet akarok név col1 col2 col3 a 10,3 10,9 növekszik b 11 15 növekszik c 20 7,2 csökken d 6,2 6,2 nincs változás e 5,3 5,4 növekszik f 4,5 4,0 csökken
2021-01-31 08:14:32
Dplyr-val: df%>% mutáció (Col3 = ifelse (col2 == col1, "nincs változás", ifelse (col2> col1, "növekvő", "csökkenő"))) Vagy a case_when használatával a @akrun javaslata szerint: df%>% mutáció (Col3 = eset_mikor col2> col1 ~ "növekszik", IGAZ ~ "csökken")) Eredmény: név col1 col2 Col3 1 a 10,3 10,9 növekszik 2 b 11,0 15,0 növekszik 3 c 20,0 7,2 csökken 4 d 6,2 6,2 nincs változás 5 e 5,3 5,4 növekszik 6 f 4,5 4,0 csökken Adat: df <-structure (list (név = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3, 11., 20., 6.2., 5.3., 4.5., Col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4) -6L)) | Kivonhatjuk a col1-et col2-ből, majd a sign használatával hozzárendelhetjük az értékeket df $ col3 <- c ("csökken", "nincs változás", "növekszik") [jel (df $ col1 - df $ col2) + 2] df # név col1 col2 col3 # 1 a 10,3 10,9 csökken # 2 b 11,0 15,0 csökken # 3 c 20,0 7,2 növekszik # 4 d 6,2 6,2 nincs változás # 5 e 5,3 5,4 csökken # 6 f 4,5 4,0 növekszik Vagy a dplyr használatával a case_when-t is használhatjuk könyvtár (dplyr) df%>% mutáció (col3 = eset_mikor (col1 == col2 ~ "nincs változás", col1> col2 ~ "növekszik", IGAZ ~ "csökken")) | R alap df $ col3 <-with (df, ifelse (col1> col2, "csökkenő", ifelse (col1